package com.teacher.game.framework.util;

import com.teacher.game.model.Block;

/**
 * Block对象池 - 优化障碍物内存分配
 * 减少垃圾回收压力，提升游戏性能
 */
public class BlockPool extends ObjectPool<Block> {
    
    private static BlockPool instance;
    
    /**
     * 单例模式获取BlockPool实例
     */
    public static synchronized BlockPool getInstance() {
        if (instance == null) {
            instance = new BlockPool(10); // 最大10个Block对象
        }
        return instance;
    }
    
    /**
     * 创建Block对象池
     * @param maxPoolSize 最大池容量
     */
    private BlockPool(int maxPoolSize) {
        super(maxPoolSize);
        // 预填充5个Block对象
        preFill(5);
    }
    
    /**
     * 创建新的Block对象
     * @return 新的Block实例
     */
    @Override
    protected Block createObject() {
        return new Block(0, 0, 20, 50); // 默认尺寸
    }
    
    /**
     * 重置Block对象状态
     * @param block 要重置的Block对象
     */
    @Override
    protected void resetObject(Block block) {
        block.resetToPool();
    }
    
    /**
     * 获取配置好的Block对象
     * @param x X坐标
     * @param y Y坐标
     * @return 配置好的Block对象
     */
    public Block acquireBlock(float x, float y) {
        Block block = acquire();
        block.setPosition(x, y);
        return block;
    }
}